package com.ruoyi.project.business.schedefine.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.model.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;

/**
 * 班次定义对象 schedule_config_sche_define
 * 
 * @author ${author}
 * @date 2024-02-15
 */
@Data
public class ScheduleDefine extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**  */
    private Long id;

    /** 组织ID */
    @Excel(name = "组织ID")
    private Long deptId;

    /** 名称 */
    @Excel(name = "名称")
    private String shiftName;

    /** 描述 */
    @Excel(name = "描述")
    private String comment;

    /** 1:全职工 2:小时工 */
    @Excel(name = "1:全职工 2:小时工")
    private Integer workerType;

    /** 班次类别 */
    @Excel(name = "班次类别")
    private Integer scheduleType;

    /** 打卡方式: 1: 多次卡 2: 一次卡 */
    @Excel(name = "打卡方式: 1: 多次卡 2: 一次卡")
    private Integer clockInType;

    /** 第一次打卡开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第一次打卡开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleStart1;

    /** 第一次打卡结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第一次打卡结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleEnd1;

    /** 第二次打卡开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第二次打卡开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleStart2;

    /** 第二次打卡结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第二次打卡结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleEnd2;

    /** 第三次打卡开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第三次打卡开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleStart3;

    /** 第三次打卡结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第三次打卡结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleEnd3;

    /** 第四次打卡开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第四次打卡开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleStart4;

    /** 第四次打卡结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "第四次打卡结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduleEnd4;

    /** 是否启用：0: 否 1: 是 */
    @Excel(name = "是否启用：0: 否 1: 是")
    private Boolean enable;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleStart1NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleEnd1NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleStart2NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleEnd2NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleStart3NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleEnd3NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleStart4NextDay;

    /** 是否跨天, 0: 否 1: 是 */
    @Excel(name = "是否跨天, 0: 否 1: 是")
    private Boolean scheduleEnd4NextDay;

    /** 是否删除 0:否 1:是 */
    @Excel(name = "是否删除 0:否 1:是")
    private Boolean deleted;

    /** 事件操作人id */
    @Excel(name = "事件操作人id")
    private Long creator;

    /** 事件更新人id */
    @Excel(name = "事件更新人id")
    private Long updater;

    /** 租户id */
    @Excel(name = "租户id")
    private Long tenantId;



    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("deptId", getDeptId())
            .append("shiftName", getShiftName())
            .append("comment", getComment())
            .append("workerType", getWorkerType())
            .append("scheduleType", getScheduleType())
            .append("clockInType", getClockInType())
            .append("scheduleStart1", getScheduleStart1())
            .append("scheduleEnd1", getScheduleEnd1())
            .append("scheduleStart2", getScheduleStart2())
            .append("scheduleEnd2", getScheduleEnd2())
            .append("scheduleStart3", getScheduleStart3())
            .append("scheduleEnd3", getScheduleEnd3())
            .append("scheduleStart4", getScheduleStart4())
            .append("scheduleEnd4", getScheduleEnd4())
            .append("enable", getEnable())
            .append("scheduleStart1NextDay", getScheduleStart1NextDay())
            .append("scheduleEnd1NextDay", getScheduleEnd1NextDay())
            .append("scheduleStart2NextDay", getScheduleStart2NextDay())
            .append("scheduleEnd2NextDay", getScheduleEnd2NextDay())
            .append("scheduleStart3NextDay", getScheduleStart3NextDay())
            .append("scheduleEnd3NextDay", getScheduleEnd3NextDay())
            .append("scheduleStart4NextDay", getScheduleStart4NextDay())
            .append("scheduleEnd4NextDay", getScheduleEnd4NextDay())
            .append("deleted", getDeleted())
            .append("creator", getCreator())
            .append("updater", getUpdater())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("tenantId", getTenantId())
            .toString();
    }
}
